// Generated from Lisma.g4 by ANTLR 4.1
package ru.nstu.isma.core.lang.ast;
import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link LismaParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface LismaVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link LismaParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression(@NotNull LismaParser.ExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#relationalOp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRelationalOp(@NotNull LismaParser.RelationalOpContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#init_cond}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInit_cond(@NotNull LismaParser.Init_condContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#unaryExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExpression(@NotNull LismaParser.UnaryExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#unaryExpressionNotPlusMinus}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExpressionNotPlusMinus(@NotNull LismaParser.UnaryExpressionNotPlusMinusContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#multiplicativeExpressionOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMultiplicativeExpressionOperator(@NotNull LismaParser.MultiplicativeExpressionOperatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#state}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitState(@NotNull LismaParser.StateContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#unaryExpressionOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExpressionOperator(@NotNull LismaParser.UnaryExpressionOperatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#approximated_var}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitApproximated_var(@NotNull LismaParser.Approximated_varContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#edge_eq}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEdge_eq(@NotNull LismaParser.Edge_eqContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#state_name}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitState_name(@NotNull LismaParser.State_nameContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#conditionalExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalExpression(@NotNull LismaParser.ConditionalExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#state_body}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitState_body(@NotNull LismaParser.State_bodyContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#not_operator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNot_operator(@NotNull LismaParser.Not_operatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#additiveExpressionOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAdditiveExpressionOperator(@NotNull LismaParser.AdditiveExpressionOperatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#derivative_quote_operant}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDerivative_quote_operant(@NotNull LismaParser.Derivative_quote_operantContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#var_ident}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVar_ident(@NotNull LismaParser.Var_identContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#or_operator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitOr_operator(@NotNull LismaParser.Or_operatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#partial_operand}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPartial_operand(@NotNull LismaParser.Partial_operandContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#and_operator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnd_operator(@NotNull LismaParser.And_operatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#equalityExpressionOperator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEqualityExpressionOperator(@NotNull LismaParser.EqualityExpressionOperatorContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#equation}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEquation(@NotNull LismaParser.EquationContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimary(@NotNull LismaParser.PrimaryContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#relationalExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRelationalExpression(@NotNull LismaParser.RelationalExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#conditionalOrExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalOrExpression(@NotNull LismaParser.ConditionalOrExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#edge_side}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEdge_side(@NotNull LismaParser.Edge_sideContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#func}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunc(@NotNull LismaParser.FuncContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#parExpressionLeftPar}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParExpressionLeftPar(@NotNull LismaParser.ParExpressionLeftParContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#parExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParExpression(@NotNull LismaParser.ParExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#edge}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEdge(@NotNull LismaParser.EdgeContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#constant}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstant(@NotNull LismaParser.ConstantContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#conditionalAndExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalAndExpression(@NotNull LismaParser.ConditionalAndExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#parExpressionRightPar}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParExpressionRightPar(@NotNull LismaParser.ParExpressionRightParContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#additiveExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAdditiveExpression(@NotNull LismaParser.AdditiveExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#primary_id}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimary_id(@NotNull LismaParser.Primary_idContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#approximated_var_tail}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitApproximated_var_tail(@NotNull LismaParser.Approximated_var_tailContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStatement(@NotNull LismaParser.StatementContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#lisma}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLisma(@NotNull LismaParser.LismaContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#state_from}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitState_from(@NotNull LismaParser.State_fromContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#arg_list}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArg_list(@NotNull LismaParser.Arg_listContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#derivative_ident}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDerivative_ident(@NotNull LismaParser.Derivative_identContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#equalityExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEqualityExpression(@NotNull LismaParser.EqualityExpressionContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#variable}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVariable(@NotNull LismaParser.VariableContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLiteral(@NotNull LismaParser.LiteralContext ctx);

	/**
	 * Visit a parse tree produced by {@link LismaParser#multiplicativeExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMultiplicativeExpression(@NotNull LismaParser.MultiplicativeExpressionContext ctx);
}